package cn.itcast.web.controller.company;

import cn.itcast.domain.company.Company;
import cn.itcast.service.company.CompanyService;
import com.alibaba.dubbo.config.annotation.Reference;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@RequestMapping("/company")
@Slf4j //自动生成：private static final Logger log = LoggerFactory.getLogger(CompanyController.class);
public class CompanyController {

    // 打印日志的工具类
    //private Log log = LogFactory.getLog(CompanyController.class);

    // 注入dubbo服务接口的代理对象
    // 导入的包：com.alibaba.dubbo.config.annotation.Reference;
    @Reference
    private CompanyService companyService;

    /**
     * 1. 列表
     * @param model
     * @return
     */
    @RequestMapping("/list")
    public String list(Model model){
        try {
            log.info("执行企业列表查询开始 start...");
            List<Company> list = companyService.findAll();
            model.addAttribute("list",list);
            log.info("执行企业列表查询结束 end...");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("查询企业列表出现错误！!!!",e);
        }
        return "company/company-list";
    }

    /**
     * 2. 进入添加页面：company-add.jsp
     * @return
     */
    @RequestMapping("/toAdd")
    public String toAdd(){
        return "company/company-add";
    }

    /**
     * 3. 添加/修改
     * 请求地址：http://localhost:8080/company/edit
     * 请求参数：id=11&name=11&licenseId=11&city=1&address=11
     * 响应数据：（添加成功，需要在列表重新显示企业信息）
     * 响应地址：重定向到列表 (添加、修改、删除后都用重定向，其他用转发)
     */
    @RequestMapping("/edit")
    public String edit(Company company){
        // 根据id判断是添加还是修改
        if (StringUtils.isEmpty(company.getId())) {
            // 添加
            companyService.save(company);
        } else {
            // 修改
            companyService.update(company);
        }

        //return "redirect:http://localhost:8080/company/list";
        return "redirect:/company/list";
    }

    /**
     * 4. 列表页面，点击编辑，进入company-update.jsp页面
     */
    @RequestMapping("/toUpdate")
    public String toUpdate(String id,Model model){
        //4.1 根据id查询
        Company company = companyService.findById(id);

        //4.2 保存查询结果
        model.addAttribute("company",company);

        //4.3 跳转到页面
        return "company/company-update";
    }

    /**
     * 5. 删除
     */
    @RequestMapping("/delete")
    public String delete(String id){
        companyService.delete(id);
        return "redirect:/company/list";
    }

}
